// function auto(fn) {
//   setTimeout(() => {
//     fn && fn('hello world')
//   }, 3000)
// }

// auto((res) => {
//   console.log(res)
// })

// function auto() {
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       resolve('hello world')
//     }, 3000)
//   })
// }

// auto().then(res => {
//   console.log(res, 'rse')
// })

// async function myFn() {
//   let data = await auto()
//   return data;
// }

// myFn().then(res => {
//   console.log(res, 'res')
// })

// 同步 异步 微任务 -> 宏任务
// 在同一个宏任务中，微任务先走（promise），宏任务后走

setTimeout(() => { console.log(4) }) // 宏任务
new Promise((resolve, reject) => {
  resolve()
  console.log(1)
})
  .then(res => {
    console.log(3)
  })
console.log(2)

// 1 2 3 4

